package com.nanhai.buddhist.college.module.collegebase.service.departments;

import com.nanhai.buddhist.college.framework.common.pojo.PageResult;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.departments.vo.DepartmentsCreateReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.departments.vo.DepartmentsExportReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.departments.vo.DepartmentsPageReqVO;
import com.nanhai.buddhist.college.module.collegebase.controller.admin.departments.vo.DepartmentsUpdateReqVO;
import com.nanhai.buddhist.college.module.collegebase.dal.dataobject.departments.DepartmentsDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 学校管理--系部 Service 接口
 *
 * @author 开发
 */
public interface DepartmentsService {

    /**
     * 创建学校管理--系部
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createDepartments(@Valid DepartmentsCreateReqVO createReqVO);

    /**
     * 更新学校管理--系部
     *
     * @param updateReqVO 更新信息
     */
    void updateDepartments(@Valid DepartmentsUpdateReqVO updateReqVO);

    /**
     * 删除学校管理--系部
     *
     * @param id 编号
     */
    void deleteDepartments(String id);

    /**
     * 获得学校管理--系部
     *
     * @param id 编号
     * @return 学校管理--系部
     */
    DepartmentsDO getDepartments(String id);

    /**
     * 获得学校管理--系部列表
     *
     * @param ids 编号
     * @return 学校管理--系部列表
     */
    List<DepartmentsDO> getDepartmentsList(Collection<String> ids);

    /**
     * 获得学校管理--系部分页
     *
     * @param pageReqVO 分页查询
     * @return 学校管理--系部分页
     */
    PageResult<DepartmentsDO> getDepartmentsPage(DepartmentsPageReqVO pageReqVO);

    /**
     * 获得学校管理--系部列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 学校管理--系部列表
     */
    List<DepartmentsDO> getDepartmentsList(DepartmentsExportReqVO exportReqVO);

    /**
     *  根据学院id获取系部列表
     * @return
     */
    List<DepartmentsDO>  getDepartmentsListByCollegeId(String collegeId );

    /**
     * 根据班级id 获取系部信息
     * @param classesId
     */
    DepartmentsDO getDepartmentDTOByClassesId(String classesId);

    /**
     *
     * @param ids
     * @return
     */
    List<DepartmentsDO> getDepartmentDTOByClassesIdList(Collection<String> ids);

}
